# zip()函数
stuList = ['a', 'b', 'c', 'd']
scoreList = [99, 90, 89, 60]

# 想通过学生id去查询分数
# 查询学生id为c的学生的分数
# 第一种方式：因为分数和id的位置是一一对应的，可以现在stuList查找c的位置index
# 然后根据查询到的index去scoreList里将分数取出来
print(scoreList[stuList.index('c')])

# 第二种方式：使用zip函数将两个list组装并使用dict转换成"字典"，然后直接可以通过key去获取value
print(type(zip(stuList, scoreList)), zip(stuList, scoreList))  # <class 'zip'> <zip object at 0x00000298E8B5B508>
stu_score_dict = dict(zip(stuList, scoreList))
print(stu_score_dict.get('c'))

# enumerate() 函数
# 可以传入一个容器，方便在遍历的时候可以获取到当前遍历元素的index
for id in stuList:
    print(id)

for index, v in enumerate(stuList):
    print(index, v)

# 常见的字符串方法
# 实际上可以把字符串理解为 字符”list“
str1 = "JAVA scala python c c++"
print(str1[-3])
print(str1.index("py"))
print(str1.count('a'))
strList = str1.split(" ")  # 按照指定的分隔符 切分字符串 并返回一个list
print(type(strList), strList)

str2 = "  1 2 3 4    "
print(str2)
print(str2.strip())  # 去除字符串左右两边的空格
print(str2)  # str字符串也是不可变对象 调用strip()方法的时候 不会改变原有的字符串 只会返回一个新的字符串

print(strList.reverse())
print(strList)

list2 = ["a", "b", "c", "d"]
# a b c d
print(list2)
print(" ".join(list2))
# a|b|c|d
print("|".join(list2))

print(str1.upper())  # 转大写
print(str1.lower())  # 转小写

# 格式化字符串
# a * b = c
# 3 * 2 = 6
# {} * {} = {}
strFormat = "{} * {} = {}"
print(strFormat.format(3, 2, 6))

# %d 数字
# %f 浮点数（小数）
# %s 字符串
print("%-4.1f * %d = %d" % (4, 3, 12))
print("I'm %(name)s, age is %(age)d" % ({'name': 'zhangSan', 'age': 18}))

# range(起始值,结束值,步长)函数
# 生成一个包含起始值，不包含结束值的序列
# 1~100 的序列
for i in range(0,101,2):
    print(i,end=" ")